package com.boot.study.jianfan;

import cn.hutool.core.lang.ObjectId;
import org.dromara.pdf.fop.doc.XEasyPdfTemplateDocument;
import org.dromara.pdf.fop.doc.component.table.XEasyPdfTemplateTable;
import org.dromara.pdf.fop.doc.component.table.XEasyPdfTemplateTableCell;
import org.dromara.pdf.fop.doc.component.table.XEasyPdfTemplateTableRow;
import org.dromara.pdf.fop.doc.page.XEasyPdfTemplatePage;
import org.dromara.pdf.fop.doc.watermark.XEasyPdfTemplateWatermark;
import org.dromara.pdf.fop.handler.XEasyPdfTemplateHandler;
import org.junit.Test;


/**
 * @author lkz
 * @className PdfTest
 * @description
 * @date 2024/2/23 14:45
 **/
public class PdfTest {


    @Test
    public void createPdf() {
        // 输出文件路径
        String outPath = "D:\\pdf\\jianfan\\" + ObjectId.next() + ".pdf";
        // 创建文档
        XEasyPdfTemplateDocument document = XEasyPdfTemplateHandler.Document.build();
        // 创建页面
        XEasyPdfTemplatePage page = XEasyPdfTemplateHandler.Page.build().setId("1").setMargin("30pt");
        // 设置标题
        page.addBodyComponent(XEasyPdfTemplateHandler.Text.build()
                .setFontFamily("宋体")
                .setText("受试者信息表").setHorizontalStyle("center")
                .setFontSize("20pt"));
        // s设置表格
        XEasyPdfTemplateTable table = XEasyPdfTemplateHandler.Table.build();
        table.setBody(XEasyPdfTemplateHandler.Table.Body.build().addRow(
                this.createRow("模块名称", "○血常规 ○血生化 ○心肌酶谱 ○尿常规 ○24h尿蛋白定量 ○大\n" +
                        "便常规 ○凝血功能 ○肿瘤标志物检查"),
                this.createColum("red", "*", "是否必填", "○是 ○否"),
                this.createRow("实验室检查是否检查", "○是 ○否"),
                this.createRow("采样日期(yyyy-mm-dd)", "___________ ."),
                this.createRow("LAB名称", "/////////"),
                this.createRow("外院", "___________ ."),
                this.createRow("按采样日期计算年龄", "___________ ."),
                this.createRow("年龄单位", "○岁")

        ));
        table.setHeight("75pt").setMargin("10pt");
        page.addBodyComponent(table);
        // 添加水印
        XEasyPdfTemplateWatermark watermark = XEasyPdfTemplateHandler.Watermark.build();
        watermark.setId("watermark")
                .setRadians("-45")
                .setFontAlpha("90")
                .setText("TACE联合卡瑞利珠单抗和甲磺酸阿帕替尼对比","TACE治疗中晚期肝癌的随机对照开放多中心临床研究")
                .setFontColor("gray")
                // 设置水印文本字体大小
                .setFontSize("20pt")
                // 设置水印图片宽度
                .setWidth("300pt")
                // 设置水印图片高度
                .setHeight("200pt")
                // 设置水印显示宽度
                .setShowWidth("200pt")
                // 开启文件覆盖
                .enableOverwrite();
        page.setBodyWatermark(watermark);
        // 添加页
        document.addPage(page);

        document.transform(outPath);

    }

    // 生成行并合并单元格
    public XEasyPdfTemplateTableRow createColum(String color, String log, String... texts) {
        XEasyPdfTemplateTableRow row = XEasyPdfTemplateHandler.Table.Row.build();
        row.setBorder("1 solid black").setVerticalStyle("center")
                .enableKeepTogether();

        boolean need = true;
        for (int i = 0; i < texts.length; i++) {
            if (need && "*".equals(log)) {
                XEasyPdfTemplateTableCell cell = XEasyPdfTemplateHandler.Table.Cell.build().addComponent(
                        XEasyPdfTemplateHandler.BlockContainer.build().addComponent(
                                XEasyPdfTemplateHandler.Text.build().setText(log).setFontColor(color),
                                XEasyPdfTemplateHandler.Text.build().setText(texts[i]).setFontFamily("宋体")


                        )).setHeight("30pt");
//                cell.setVerticalStyle("top").setWidth("180")
//                        .setHeight("29");
                // cell.setHorizontalStyle("justify");
                need = false;
                row.addCell(cell);
            } else {
                row.addCell(XEasyPdfTemplateHandler.Table.Cell.build().setHeight("30pt")
                        .addComponent(XEasyPdfTemplateHandler.Text.build().setText(texts[i])).setFontFamily("宋体")
                );
            }
        }

        return row;
    }

    /**
     * 生成行
     *
     * @param texts
     * @return
     */
    public XEasyPdfTemplateTableRow createRow(String... texts) {
        XEasyPdfTemplateTableRow row = XEasyPdfTemplateHandler.Table.Row.build()
                .setBorder("solid").setVerticalStyle("center")
                .setFontFamily("宋体");
        for (int i = 0; i < texts.length; i++) {
            row.addCell(XEasyPdfTemplateHandler.Table.Cell.build().setHeight("30pt")
                    .addComponent(XEasyPdfTemplateHandler.Text.build().setText(texts[i]))

                    // .setBorderStyle("solid")
                    .setHorizontalStyle("left"));
        }
        return row;
    }


}
